import fs from "fs-extra"
import path from "path"
import fileData from "./fileData.json" assert { type: "json" }

function createVueFile(fileName: string, folderPath: string) {
  // path.join()方法将文件名和文件路径拼接成完整的文件路径，并将结果保存在变量vueFilePath和cssFilePath中
  const vueFilePath = path.resolve(folderPath, `${fileName}.vue`)
  const cssFilePath = path.resolve(folderPath, `${fileName}.scss`)

  //fs.existsSync()方法检查vueFilePath所指向的文件是否存在
  if (!fs.existsSync(vueFilePath)) {
    const componentName = fileName.charAt(0).toUpperCase() + fileName.slice(1) // 将文件名的首字母大写

    //fs.writeFileSync()方法来创建一个Vue文件，并将指定的内容写入文件中
    //第一个参数是文件路径，第二个参数是要写入文件的内容。
    fs.writeFileSync(
      vueFilePath,
      `<script setup lang="ts" name="${componentName}"></script>

      <template>
        <div class="${componentName}"></div>
      </template>

      <style scoped lang="scss">
      @import "./${componentName}.scss";
      </style>`
    )
    console.log(`Created file: ${vueFilePath}`)
  }

  if (!fs.existsSync(cssFilePath)) {
    fs.writeFileSync(cssFilePath, `/* TODO: Add your CSS code here */`)
    console.log(`Created file: ${cssFilePath}`)
  }
}

// 遍历文件数据对象
// Object.entries()方法将fileData对象转换为一个键值对的数组
Object.entries(fileData).forEach(([fileName, folderPath]) => {
  createVueFile(fileName, folderPath as string)
})
